An application may be divided into various tasks that may be subdivided into groups of related subtasks (e.g., threads) which may be run in parallel on a computational resource. Related threads may be processed in parallel with one another on different components (or different cores within a processor) as “parallel threads,” and the completion of a given task may entail the completion of all of the related threads that form the task. Similar performance of each component may reduce wait time for completion of related threads.
Power management of processors may include a power management strategy in which the processors themselves may manage most aspects of their performance and power policy autonomously without the consideration of other processors or other cores within the same processor. Accordingly, completion of related threads may occur at different times with a concomitant overall decrease in performance.
Power management software may take the form of an operating system (OS) power governor or OS driver. Such power management software may react too slowly to create a fine-grained power policy in the processor/processor cores. For apparatus or systems with large numbers of processors, such as servers, performance variation among the processors may lack the performance uniformity assumed by parallel thread processing applications. Further, for large distributed computing systems, variation in processor performance may complicate debugging of applications because it may introduce non-determinism in performance from one application to the next.